#!/usr/bin/enr/python3
# -*- coding: utf-8 -*-
# -------------------------------
# @Author : hurong
# @File : 06_lamda_demo.py
# @Time : 2023/6/30 17:32
# -------------------------------

'''
匿名函数的使用场景：
1.需要一个函数，但是又不想费神去命名这个函数
2.通常在这个函数只使用一次的场景下
3.可以指定短小的回调函数

'''
import math
# 常规写法
def circle_area(r):
    '''
    计算圆的面积
    :param r: 半径
    :return:
    '''
    result = math.pi*r*r
    return result

r=10
# print(f"半径为{r}的圆的面积为{circle_area(r)}")
# 用lamda表达式实现28行的结果
result = lambda r:math.pi*r*r
# print(f"半径为{r},圆的面积是{circle_area(r)}")
print(f"半径为 {r} 的圆的面积为{result(r)}")
# 不可以省略前面的变量;直接打印，返回的是内存地址。
# print(lambda r:math.pi*r*r)     # 输出结果：<function <lambda> at 0x000002AB5D4C2EE0>

# 对获取到的信息进行排序
# 书籍信息
book_info = [
    ("python零基础入门", 35.5),
    ("java零基础入门", 24),
    ("C++ 零基础入门", 32.5)
]
print(book_info)

# 指定规则进行排序
'''匿名函数lamda,
只调用一次，调用一次后整个函数体就都不在了'''
# lamda x:(x[1]) 返回列表中的每个元组的第二个元素
book_info.sort(key=lambda x:(x[1]))
print(book_info)

# 例子2
foo = lambda x,y:x+y
print(f"输出加法器的值：{foo(2,4)}")
# 第54行代码等价于写法如下：
print((lambda x,y:x+y)(1,3))
